4.2节使用pandas的merge函数合并了3个DataFrame,但是merge函数一次只能合并2个DataFrame,所以合并3个DataFrame需要将merge函数使用两次。本节使用pandas的concat函数进行合并,与merge函数不同的是,使用concat函数可以一次合并多个DataFrame。
【问题描述】
使用pandas的concat函数一次拼接多个DataFrame。
【示例4-6】
本例使用与示例4-4相同的数据。用concat函数水平拼接3个工作表的数据并保存到Excel文件,
- 编写下面的代码:
code.python
import pandas as pd
# 读取三个工作表的数据
df1 = pd.read_excel('D:/Samples/ch04/02 数据合并/拼接数据/学生成绩.xlsx', sheet_name='Sheet1', index_col=0, engine='openpyxl')
df2 = pd.read_excel('D:/Samples/ch04/02 数据合并/拼接数据/学生成绩.xlsx', sheet_name='Sheet2', index_col=0, engine='openpyxl')
df3 = pd.read_excel('D:/Samples/ch04/02 数据合并/拼接数据/学生成绩.xlsx', sheet_name='Sheet3', index_col=0, engine='openpyxl')
# 使用concat函数水平拼接三个工作表的数据
result = pd.concat([df1, df2, df3], axis=1)
# 输出合并后的数据
print(result)
# 将结果保存到新的Excel文件中
result.to_excel('D:/Samples/ch04/02 数据合并/拼接数据/学生成绩_拼接.xlsx', index=True, engine='openpyxl')
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现数据的合并,在IDLE Shell窗口输出合并后的结果。
code.python
>>> == RESTART: D:/Samples/1.py =
语文 数学 英语
姓名
王东 16 27 34
徐慧 85 54 92
王慧琴 99 73 118
章思思 95 83 62
阮锦绣 92 91 92
周洪宇 93 92 113
谢思明 98 95 117
程成 98 95 114
王洁 102 102 136
张丽君 107 104 105
可在原始数据文件的相同路径下找到新建的Excel文件。
【知识点扩展】
使用pandas的concat函数可以一次拼接多个DataFrame,该函数的参数的用法如表4-2所示。
表4-2 concat函数的参数
| 参 数 | 说 明 |
|---|---|
| objs | 指定进行拼接的对象集合,可以是Series, DataFrame等组成的列表等 |
| axis | 指定拼接的方向,默认值为0,垂向拼接,值为1时水平方向拼接 |
| join | 指定拼接的方法,值为outer或inner,相当于merge方法中how参数设置的外连接和内连接 |
| join_axes | 指定保留的轴,作用相当于merge方法中how参数设置的左连接和右连接 |
| ignore_index | 拼接后忽略原来的索引编号,重新编号 |
| keys | 添加一个键,指定数据来源 |